let ladderHash = {
  1: 1,
  2: 2,
  3: 3
}
/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function(n) {
  if (ladderHash[n]) { return ladderHash[n] }
  
  for(let i = 1; i <= n; i++) {
    if (i === 1) { ladderHash[i] = 1; continue; }
    if (i === 2) { ladderHash[i] = 2; continue; }
    ladderHash[i] = ladderHash[i - 1] + ladderHash[i - 2]
  }

  return ladderHash[n]
};


/**
 * 假设有5阶楼梯, 第1步爬1阶, 还剩4阶, 第1步爬2阶还剩3阶
 * 假设有1阶爬1阶, 1种爬法
 * 假设有2阶, 第1步爬1阶, 还剩1阶, 第1步爬2阶到顶 2种爬法
 * 假设有3阶, 第1步爬1阶, 还剩2阶 2 , 第1步爬2阶, 还剩1阶 1  2+1=3种爬法
 * 假设有4阶, 第1步爬1阶, 剩3阶 3 , 第1步爬2阶, 剩2阶 2  3+2=5种
 * 
 */